/*
    将编译运行模块与网络服务绑定，变成网络资源，供oj_server请求
*/
#include "compile_run.hpp"
#include "../util/httplib.h" //阻塞式多线程的一个网络http库

using namespace ns_compile_run;
using namespace httplib;

void useTips(char* command)
{
    std::cout << "<using error>\n\t"<< "<using correct>:./" << command <<  " port\n" << std::endl;
}

int main(int argc, char* argv[])
{
    // 0、使用安全检查
    if(argc != 2)
    {
        useTips(argv[0]);
        return 1;
    }
    
    // 1、定义一个http网络服务
    Server svr;

    // 2、预绑定资源(服务)/compiler_server，参数1：请求的资源，参数2（lambda函数）：请求资源时执行的回调方法
    svr.Post("/compiler_server", [](const Request& req, Response& resp)
    {
        std::string in_json = req.body; //请求正文就是json格式的源码
        std::string out_json;
        CompileRun::start(in_json, out_json); //请求对应资源
        resp.set_content(out_json, "application/json;charset=utf-8"); //设置相应正文和相应报头
    });

    // 3、启动http服务
    svr.listen("0.0.0.0", std::stoi(argv[1])); 

    return 0;
}